home *** CD-ROM | disk | FTP | other *** search
- UTILITIES MICHAEL MEFFORD
- Vol 9 No. 2
- BATCHMAN
-
- This issue's utility, BATCHMAN, is designed both to give your batch files
- significantly more power and to add many of the refinements we all wish DOS
- provided. You can check the DOS version, available memory, or display type
- and then branch accordingly. You can create colorful menus that branch on a
- user keypress. And, among its many other capabilities, BATCHMAN will let you
- adjust the keyboard typematic rate and tame the grating DOS beep or turn it
- into a tune.
-
- BATCHMAN is actually a collection of 48 batch file enhancement utilities, all
- rolled into one 6K program. This provides more than convenience: if
- BATCHMAN's utilities were stored separately, at a minimum one cluster each,
- they'd take up about 100K of disk space.
-
- ERRORLEVELS
-
- The key to BATCHMAN's operations is the ERRORLEVEL code, a number that programs
- can report to DOS when they terminate and that can be acted upon from a batch
- file. I'll abbreviate ERRORLEVEL as EL for the remainder of this
- documentation.
-
- An EL can have a value between 0 and 255. Each of the BATCHMAN commands
- returns information as an EL. An explanation of the syntax of each of the
- BATCHMAN commands and the ELs they return will be found below.
-
- The syntax for BATCHMAN is:
-
- BATCHMAN [command] [arguments] [/R]
-
- Entering BATCHMAN without any parameters (or with an invalid parameter) will
- bring up a multi-screen display that lists all the BATCHMAN commands. The
- optional arguments are parameters for any given command. If you add the
- optional /R switch, BATCHMAN will display the EL returned from the command.
- The Report option will be most helpful when you are designing and debugging
- your batch files. Be sure to place BATCHMAN in a directory included on the DOS
- PATH so your batch files can find it.
-
- THE BATCHMAN COMMANDS
-
- I will be using the following conventions throughout the article: the commands
- will be listed first, followed by any parameters they might accept, followed by
- the EL the command will return. I'll put the EL in curley brackets so no one
- will think it's part of the command syntax and try to type it in. For example:
-
- CLS [nn] {EL=0}
- If it is entered without the optional nn color argument, the command:
-
- BATCHMAN CLS
-
- will clear the screen with whatever color it finds at the current cursor
- position. This provides the most flexibility when you plan to distribute a
- BATCHMAN batch file to other systems because it retains the user's custom
- color scheme.
-
- If you wish to control the CLS color, just add the color argument nn, where
- nn is a decimal or hexadecimal value derived from the table in Figure 1.
- Hexadecimal numbers need a suffix of "h" to distinguish them from decimal.
- Selecting a color in hex is easier than decimal because each of the 16 possible
- values for each of the background and foreground colors fits into a single
- digit: the first digit is background, the second foreground.
-
- To clear the screen so that subsequent DOS output will use blue letters on a
- light gray background, for example, you would enter:
-
- BATCHMAN CLS 71h
-
- The first number (7) is the background color, and the second (1) is the
- foreground color. To do the same using a decimal number requires a little
- math: the background color is multiplied by 16 and added to the foreground.
- In the above example, the decimal equivalent would be (7 * 16) + 7 = 113,
- so the equivalent command in decimal would be:
-
- BATCHMAN CLS 113
-
- Like its DOS counterpart, BATCHMAN's CLS also homes the cursor to the top left
- corner. Unlike the DOS CLS, however, BATCHMAN's will clear the whole screen
- properly in video modes such as the EGA/VGA 43/50 line modes.
-
- CECHO [C] [nn,]string {EL=0}
-
- CECHO is similar to the DOS ECHO command except you can choose the color of the
- echoed string. The nn color value is entered in the same manner as with CLS,
- and again, if you don't enter a color value, BATCHMAN will use the currently
- specified color. To echo a "Zowie!" to the display in an eye-catching blinking
- yellow on red, you would enter:
-
- BATCHMAN CECHO CEh,Zowie!
-
- The C (hex) value for the background color normally displays as orange for a
- foreground color. When used as a background color, however, it displays as the
- blinking low intensity counterpart, red. Keep in mind that any high intensity
- color selected for the background will blink in its corresponding low intensity
- color value.
-
- The optional C parameter shown in CECHO syntax (don't confuse it with the hex
- C color value in the immediately-preceding example) stands for "no carriage
- returns." Normally, both CECHO and the DOS ECHO move to the next line after
- echoing a string. At times this is not desirable. For example, you might
- wish to echo two strings, with different colors, on the same line. With
- BATCHMAN you can suppress the carriage return by adding a solitary C as the
- first argument. For example, to display a red on yellow blinking "Zowie!"
- followed by a normal red on yellow "Batchman!" on the same line your batch file
- would consist of:
-
- ECHO OFF
- BATCHMAN CECHO C CEh,Zowie!
- BATCHMAN CECHO 4Eh,Batchman!
-
- You can suppress the carriage return to prevent the display from scrolling when
- you echo to the last line of the display. This feature makes full screen menus
- feasible, whereas echoing to the last line with the DOS ECHO command causes the
- screen to scroll, spoiling any previous display layout.
-
- SETLOOP [n] {EL=0}
- .
- .
- DECLOOP {EL=SETLOOP-1}
-
- You use the SETLOOP and DECLOOP commands when you want to repeat a set of batch
- file commands. SETLOOP sets a loop counter to the n argument, which can be a
- decimal number between 0 and 255. Once the counter is set, the BATCHMAN
- DECLOOP command will decrement the counter each time it is executed and return
- the new value of the loop counter as an EL. The short batch file:
-
- ECHO OFF
- BATCHMAN SETLOOP 10
- :HERE
- BATCHMAN CECHO ZONK!
- BATCHMAN DECLOOP
- IF ERRORLEVEL 1 GOTO HERE
-
- will echo "ZONK!" to the display 10 times before terminating. The batch
- processor will branch to the HERE label as long as EL is 1 or greater.
-
- Programmers may wonder where the loop counter is stored while other commands
- are executing. For the SETLOOP and PUSHPATH commands (PUSHPATH/POPPATH will be
- discussed below) BATCHMAN creates a small TSR of approximately 500 bytes. The
- loop counter uses one byte for its storage; the balance is reserved for path
- strings. When the loop counter becomes zero, the BATCHMAN TSR data area is
- returned to the system memory pool (unless PUSHPATH is also using the data
- area). Note that since the loop counter is only one byte, you can not do loop
- nesting.
-
- If you exit a batch file before SETLOOP has decremented to zero, the TSR data
- area will not be released. You should construct your batch files so that any
- early exit from a loop will execute a SETLOOP 0 to force a recovery of the TSR
- data area. BATCHMAN is smart enough not only to find its previous TSR data,
- but will prevent the creation of another if you try to enter two SETLOOP
- commands.
-
- QFORMAT [d:] [N]
- {EL=0 if successful; EL=1 if not.}
-
-
- QFORMAT is designed to wipe out all the files and subdirectories on a floppy
- disk at a single stroke. To keep you from accidentally trashing your hard
- disk, the command will only accept A: or B: as drive arguments. All other
- drive requests are ignored, and you can omit the drive argument only if A: or
- B: is your current default drive.
-
- As a further precaution, QFORMAT warns you that all data will be lost and
- requires that you press Y and Enter to confirm. Any other keypress will abort
- the process. If you don't want BATCHMAN to pause and ask for your approval,
- however, you can add the optional N argument to the command. The N stands for
- No Ask. Use this option with caution!
-
- QFORMAT will work only on diskettes that have already been formatted by DOS.
- The DOS FORMAT command puts vital information about the media type, number of
- clusters per FAT, and so forth, in the boot sector of the disk. BATCHMAN's
- QFORMAT command uses this information to find and place zeros in the FAT and
- root directory sectors of the disk.
-
- The reason why QFORMAT can be so fast is that it doesn't have to do the same
- work as the DOS FORMAT command. FORMAT not only does a low level format, but
- also writes over the entire data area of the disk. It's the low-level-and-data
- -format process that takes forever. A low level format really needs be done
- only once, and QFORMAT blithely skips that step. QFORMAT is sophisticated
- enough to preserve bad sector information, however.
-
- PUSHPATH
- {EL=0 if successful; EL=1 if not}
- .
- .
- POPPATH
- {EL=0 if successful; EL=1 if not}
-
- PUSHPATH saves the current drive and directory, which can then later be
- restored with POPPATH. Typically, a batch file that executes an application
- includes a DOS CD command (often a change of drive as well) move operations to
- the place where the application resides. After the application terminates,
- it's usually desirable to return to the original path.
-
- By way of example, to run Lotus 1-2-3 on drive D: and then return to the
- default path afterwards, your batch file would look something like this:
-
- BATCHMAN PUSHPATH
- D:
- CD \123
- 123
- BATCHMAN POPPATH
-
- PUSHPATH saves the current path in a TSR data area, just as the SETLOOP
- command does. While only one byte is reserved for SETLOOP's loop counter,
- however, BATCHMAN's TSR data area allows stacking up several paths with
- PUSHPATH. Subsequent POPPATH commands will retrieve the paths in a LIFO
- (Last In First Out) stack basis.
-
- Suppose, for instance, that you're currently in your directory and you issue
- the following commands:
-
- BATCHMAN PUSHPATH
- CD \DOS
- BATCHMAN PUSHPATH
- CD \PCMAG
- BATCHMAN POPPATH
- BATCHMAN POPPATH
-
- In this sequence, the first POPPATH puts you back into the \DOS subdirectory,
- and the last POPPATH restores you to the root directory from which you started.
-
- The number of path layers that can be stored will vary with the length of each
- path pushed onto the stack. BATCHMAN's TSR area reserves 408 bytes for paths,
- which allows for 6 levels of nested paths if each path is the maximum 65
- characters allowed by DOS. Shorter path names will allow nesting greater than
- 6 levels. If necessary, you can change the storage size by modifying the
- DIR_COUNT equate in the assembly listing.
-
- BATCHMAN returns an EL of 1 if it finds the stack too full for another
- PUSHPATH or if the stack is already empty with a POPPATH. Otherwise, the EL
- returned is zero. When the last path is popped off the stack, the TSR data
- area is discarded and returned to the DOS memory pool.
-
- ANSI {EL=0 if ANSI found;
- EL=1 if not found}
-
- This BATCHMAN command is designed simply to determine whether ANSI.SYS is or
- is not installed. If the EL is 1 you can then branch around any ANSI.SYS
- escape sequences contained in your batch files. BATCHMAN is smart enough to
- detect not only ANSI.SYS, but my own ANSI.COM alternative
- (see our January 31, 1989, issue), but it will not find other ANSI.SYS
- emulators, such as DesqView's DV-ANSI.
-
- BEEP [m,n[;m,n]...] {EL=0}
-
- The BATCHMAN BEEP command gives you a great deal of flexibility in controlling
- the frequency and length of the sound DOS emits in response to a Ctrl-G
- character. The m,n beep arguments are decimal numbers and are used in pairs,
- separated by a comma. The m value represents the frequency (in Hz.), and n is
- the number of 1/18th second increments that comprise the duration.
-
- The frequencies of various musical notes can be found in the table in Figure 2.
- The command for a middle C beep of a 1/2 second, for example, would be:
-
- BATCHMAN BEEP 262,9
-
- By separating the argument pairs with semicolons, you can produce a series of
- tones with the same BEEP command. You might, for example, find it interesting
- to try:
-
- BATCHMAN BEEP 392,3;523,3;659,3;
- 784,3;10,3;659,3;784,12
-
- The lowest valid frequency is 19, a very low buzzing sound. You can use a
- value less than 19 to create pauses between tones: no sound will be emitted,
- but the duration argument is executed, effectively producing a programmable
- delay between notes.
-
- If you omit all arguments, BEEP defaults to 1046,1--a C note for 1/18 of a
- second. The DOS Ctrl-G beep is a frequency of 886 that lasts for one second.
- Musically, a frequency of 886 is an out-of-tune A, which probably explains why
- it grates on so many ears.
-
- WAITTIL hh:mm[ss]
- {EL=0 if successful; EL=1 if aborted}
-
- WAITTIL provides a convenient way to pause until a certain time of day. The
- hh:mm:[ss] argument is the time in hours, minutes, and optionally seconds.
- BATCHMAN will wait until the specified time arrives, but you can manually
- abort the wait by entering any keystroke. A typical application for WAITTIL
- would be to execute an electronic bulletin board communications program that
- would automatically download messages late at night when rates are lower.
-
- WAITFOR [mm:]ss
- {EL=0 if successful; EL=1 if aborted}
-
- WAITFOR simply pauses for a specified number of minutes (mm) and seconds (ss).
- You can omit the minute part of the argument if you desire. As with WAITTIL,
- the WAITFOR delay can be over-ridden by pressing a key.
-
- CURSORTYPE [m,n]
-
- You can use CURSORTYPE either to create a cursor size that suits your taste or
- to restore the normal underline cursor after an application alters it.
- Entering CURSORTYPE without any arguments will default to the standard
- underline cursor. To create a custom cursor, you supply the m,n arguments as
- the start and stop line values. These values can be either decimal or hex;
- for hex input, add an "h" suffix to the number.
-
- The top of the character box is logical line zero; successively-numbered lines
- increment downward. The valid scan line values used for m and n are 0-7 for a
- CGA, 0-13 for a monochrome or EGA, and 0-15 for a VGA. The default underline
- cursor start/stop lines are 6,7 for a CGA, 11,12 for a monochrome or EGA, and
- 13,14 for a VGA. To set an EGA solid block cursor, for example, enter:
-
- BATCHMAN CURSORTYPE 0,13
-
- Note that the EGA BIOS on some video boards will attempt to override your
- selections. BATCHMAN temporarily turns off this BIOS EGA emulation logic for
- all video boards when the cursor type is set, and this seems to work for most
- systems. However, if entering CURSORTYPE without arguments does not give you
- the normal default underline cursor, you can explicitly request an underline
- cursor that fits your display. You may need to do this for video modes other
- than the normal 25 line modes. A "wrap around" cursor, in which the stop line
- has a lesser value than the start line, is supported by the hardware of only
- some video systems.
-
- BREAK {EL=0 if OFF; EL=1 if ON}
-
- The BATCHMAN BREAK command returns the current state of DOS's Ctrl-Break
- checking. You can change the state of BREAK with the DOS command of the same
- name.
-
- DRIVEEXIST d:
- {EL=1 if exist; EL=0 if not}
- DIREXIST directory
- {EL=1 if exist; EL=0 if not}
-
- These two BATCHMAN commands are used to return an EL of 1 to your batch files
- if the specified variable exists.
-
- ISVOL [d:]volume
- {EL=1 if exist; EL=0 if not}
-
- Similarly, this command returns an EL of 1 if a particular disk volume exists
- on the named drive.
-
- YEAR {EL=year from 1980
- (0-199), where 0=1980}
- MONTH {EL=(1-12)}
- DAY {EL=(1-31)}
- WEEKDAY {EL=(0-6), where
- Sun=0; Sat=6}
- HOUR {EL=(0-23)}
- MINUTE {EL=(0-59)}
- SECOND {EL=(0-59)}
-
- This group of BATCHMAN commands returns the system time and date. Note that
- you can obtain a relatively fine resolution of the time.
-
- VIDEOMODE {EL=(0-19)}
-
- The EL returned by the VIDEOMODE command allows you to determine which of the
- possible screen modes listed in Figure 3 is currently being used by your
- display.
-
- ROWS {EL=display rows}
- COLS {EL=display columns}
-
- These obvious but very handy commands return the current number of rows or
- columns displayed.
-
- SETCURSOR m,n {EL=0}
-
- By supplying values for m (the row) and n (the column) you can use SETCURSOR
- to place your cursor at the specified screen location. By using SETCURSOR in
- concert with CECHO you can precisely control the location of your messages.
- For example, to display "Gotham City" in blue in the middle of the screen, you
- would create the following batch file:
-
- ECHO OFF
- BATCHMAN SETCURSOR 12,35
- BATCHMAN CECHO 1,Gotham City
-
- Be sure to include the ECHO OFF command, both so that DOS won't spoil your
- display by echoing the commands, and so that the cursor won't return to the
- beginning of the next line for the CECHO command.
-
- A related use of SETCURSOR is to hide the cursor. You can do this by setting
- the cursor to display on line 26, which is off screen. Be sure to issue a
- second SETCURSOR command that puts the cursor back on screen once the hidden
- cursor is no longer needed, or you won't be able to see what you type! If you
- forget, don't panic. Just press Esc, blindly type CLS and press Enter, and
- things will return to normal with the cursor homed to the top of the display.
-
- E43V50
- {EL=0 if successful; EL=1 if not}
-
- This BATCHMAN command loads the 8x8 BIOS font for an EGA or VGA monitor. This
- changes the number of lines displayed to 43 (EGA) or 50 (VGA}. You can use the
- DOS MODE command to return to the normal 25-line display.
-
- PRTSC {EL=0}
-
- This command will execute a printer screen dump exactly as if you had pressed
- Shift-PrtSc on an 83-key keyboard or the dedicated Print Screen key on 101-key
- keyboard.
-
- COMPARE string1 string2
- {EL=0 if match; EL=1 if no match}
-
- The BATCHMAN COMPARE makes a case insensitive comparison between two strings.
- For most purposes you'll probably want to use COMPARE instead of the case
- sensitive DOS batch command:
-
- IF string1==string2
-
- With the DOS IF string comparison a non-case sensitive match requires two tests
- --one for uppercase and one for lowercase. Even this does not guarantee a
- match if the string is a mixture of upper and lower case, as might occur if a
- batch file were looking for a person's name, for example. COMPARE solves this
- case problem. Note that the BATCHMAN COMPARE does not need the double equal
- signs the DOS IF command uses.
-
- CANCOPY filespec [d:]
- {EL=0 if room to copy; EL=1 if not}
-
- Before you copy a file or a number of files to another drive (especially a
- floppy disk drive), you can use CANCOPY to see if there is enough room for all
- the specified files. The filespec you supply can use the DOS ? and *
- wildcards. If you don't specify the target drive, the default drive is
- checked. Thus, for example, to check whether the collection of PC Magazine
- utilities you keep in a directory called PCMAG on drive C: will fit onto a
- floppy, you would enter:
-
- BATCHMAN CANCOPY C:\PCMAG\*.* A:
-
- BATCHMAN returns an EL of 0 if there is room; otherwise a 1 would be returned.
- If you enter this from the DOS command line, you'll want to include the /R
- option to see the EL returned on screen.
-
- WARMBOOT
- COLDBOOT
-
- As their names imply, WARMBOOT and COLDBOOT reboot your system. WARMBOOT does
- the same thing as pressing Ctrl-Alt-Del; COLDBOOT is like hitting the big red
- switch. A COLDBOOT does a memory check (among other things) that WARMBOOT
- does not, and it takes a lot more time. Of course, be forewarned that with
- either of these commands all unsaved data in RAM memory will be lost.
- Note that WARMBOOT and COLDBOOT may not work on some non-compatible systems.
-
- SHIFT ALT | CTRL
- {EL=1 if depressed; EL=0 if not}
-
- This command returns the state of either the Alt or Ctrl key. For example,
-
- BATCHMAN CTRL
-
- returns an EL of 1 if the Ctrl key is currently depressed. You can use the
- SHIFT command along with the BATCHMAN GETKEY command without arguments to
- detect alternate key presses. (See GETKEY, below, for an example.)
-
- NUMLOCK [ON | OFF] {EL=0}
- CAPSLOCK [ON | OFF] {EL=0}
- SCROLLOCK [ON | OFF] {EL=0}
-
- These three self-explanatory commands toggle the current shift state of the
- NumLock, CapsLock or ScrollLock keys when used without the ON or OFF options.
- They explicitly turn the three keys on or off if the optional arguments are
- supplied.
-
- Thus, for example:
-
- BATCHMAN NUMLOCK
-
- will toggle the NumLock state on if it was off or off if it was on. Entering
-
- BATCHMAN NUMLOCK OFF
-
- will turn the NumLock state off regardless of whether it is currently on or
- off. This latter would be a useful line in your AUTOEXEC.BAT if you use the
- numeric keypad for cursor navigation instead of number entry. Note that on
- some keyboards the LED indicator lights may not faithfully track changes in
- shift status.
-
- RENDIR old new {EL=0 if successful; EL=1 if not}
-
- Long-time users of our utilities will recognize this command, as it performs
- the same function as the standalone RENDIR utility published in our April 15,
- 1986 issue. The version presented here will rename a directory, but only on
- systems using DOS 3.0 or later. To use it simply enter the path of the old
- directory and the new name.
-
- For example, to change the name of a temporary directory named TMP on the C:
- drive to a permanent name, say, ROBIN, you would enter:
-
- BATCHMAN RENDIR C:\TMP C:\ROBIN
-
- Be sure to include the complete path for both the old and new directory names
- if the directory is other than the default.
-
- ROMDATE {EL=0}
-
- ROMDATE displays the eight bytes of the BIOS date at address FFFF:0005 of the
- ROM BIOS. Usually, the display will be something like 10/07/87, but some
- clone BIOSs do not have a date. If no ASCII numbers are found, BATCHMAN
- displays nothing.
-
- GETKEY ['string' n] {EL=scan code if no ['string' n] list; else
- EL=position in list.}
-
- There are probably hundreds of versions of the batch file GETKEY program.
- They return the scan code of the next key you press as an EL. If you enter the
- BATCHMAN GETKEY command without the optional (bracketed) arguments, it will do
- the same thing.
-
- Entered without arguments, GETKEY can also be used with the BATCHMAN SHIFT
- command to detect Alt- or Ctrl- key combinations. The scan code for the "Q"
- key is 16. To check for an Alt-Q keypress (perhaps as a Quit key command),
- you would use the following batch file:
-
- ECHO OFF
- :GETKEY
- BATCHMAN GETKEY
- IF NOT ERRORLEVEL 16 GOTO GETKEY
- BATCHMAN SHIFT ALT
- IF NOT ERRORLEVEL 1 GOTO GETKEY
- ECHO Alt-Q was pressed.
-
- GETKEY's optional key list provides still another kind of functionality with
- its optional key list. The information you need may not be the scan code of a
- given key, but rather its position in a string. If you supply the optional
- 'string' argument to GETKEY, BATCHMAN will wait either until one of those keys
- listed has been pressed or until you break out of the command with Ctrl-Break
- or Ctrl-C. An example may helpful here. With the command:
-
- BATCHMAN GETKEY 'yn'
-
- BATCHMAN will wait until either the "Y" or the "N" key or one of the break keys
- mentioned above is detected. All other keypresses are ignored, and if the
- break- out keys are pressed, the EL returned will be 255. GETKEY is not case
- sensitive, so if either "Y" or "y" is pressed, the EL will be 1, since the "y"
- is the first character in the string of valid keypresses. For "N", an EL of 2
- will return.
-
- The string must be enclosed in a pair either of single or double quotes. If
- you want the single quote included as a valid keypress, enclose it in double
- quotes and vice versa for double quotes, as in the following example:
-
- BATCHMAN GETKEY '"'
-
- You can also include the function keys (even the F11 and F12 keys of the
- extended keyboard) in the GETKEY list. The function key numbers are listed
- without quotes, (they are designated by the n in the command syntax above), and
- may or may not be further identified with a leading "F." Multiple function
- keys are delimited by either a space, comma or semicolon. To add the F1 and F2
- as valid keys to the "yn" string example above, you would enter either:
-
- BATCHMAN GETKEY "yn" F1 F2
-
- or just
-
- BATCHMAN GETKEY "yn" 1 2
-
- If F1 is now pressed, the returned EL will be 3, since F1 is the third entry
- in the list.
-
- DOSVER {EL=(major*32)+minor}
-
- DOSVER returns an EL representation of the DOS version in use. DOS version
- numbers have two parts, the Major version (the number to the left of the
- decimal point) and the Minor version (the number to the right). For DOS
- version 3.10, then, 3 is the major and the 10 is the minor. Since the largest
- EL number is 255, the DOS version number does not fit conveniently into an EL.
- For DOS 3.10, for example, if the dot is discarded the remaining 310 is too
- large for an EL.
-
- Of course, BATCHMAN could be content to return only the major number,
- truncating anything after the dot, or even the first digit after the dot. But
- that would be less than sufficient for some applications. So instead, the
- DOSVER command compresses the version number by multiplying the major number by
- 32 and adding it to the minor number. With DOS 3.30 the result will be (3*32)+
- 30=126; with DOS 4.00 it would be 128. If there had been a DOS version 3.32
- we would have a problem of course, since this would also return 128.
- Historically speaking however, we are safe here.
-
- MAINMEM n | R {EL=0 if enough}
- EXPMEM n | R {EL=0 if enough} EXTMEM n | R {EL=0 if enough}
-
- The arguments for these three memory commands can be either a decimal number,
- n, or an R. The decimal argument is used to check whether the desired amount
- of memory (in KB) is free. If BATCHMAN finds that there is enough free memory
- to meet the request, the EL will be 0. Thus, if an application needs 512K
- bytes of the 640K maximum possible with DOS, you would enter:
-
- BATCHMAN MAINMEM 512
-
- The EL will return 0 if there are at least 512K bytes free; otherwise, a 1.
- Your batch file can then branch to an error message if there is not enough
- memory to run the application. Note that these memory commands do not
- allocate the memory. They only check if it is free.
-
- The alternative R argument stands for Report and will display the current free
- memory of the type requested on the screen. To see how much free expanded
- memory you have, for example, enter:
-
- BATCHMAN EXPMEM R
-
- The report option of the three types of memory will go nicely with BATCHMAN's
- ROMDATE command in a system information batch file.
-
- DISPLAY {EL=display type}
-
- The DISPLAY command will report on the type of display your system has
- installed. The values returned by DISPLAY as EL codes are:
-
- 1=MDA
- 2=CGA
- 4=EGA color
- 5=EGA mono
- 6=PGS
- 7=VGA mono
- 8=VGA color
- 11=MCGA mono
- 12=MCGA color
-
- CPU20 {EL=CPU type}
-
- Similarly, the CPU command returns an EL that indicates the microprocessor
- used by your machine. The specific EL numbers are: 1=8086/8088; 2=80186;
- 3=80286; and 4=80386.
-
- WINDOW m,n,w,h[,c,b] {EL=0 if
- successful; EL=1 if not}
-
- The powerful WINDOW command displays screen boxes. It provides several
- parameters and options. The first two decimal numbers (m,n) are the row and
- column of the top left hand corner of the window. The next two decimal
- numbers (w,h) are the desired width and height of the window (including the
- border characters.)
-
- The smallest size that WINDOW allows is 2 characters in width and height.
- The optional fifth parameter, c, can be either a hexadecimal or decimal number
- for the color of the window. If no color argument is supplied, the current
- color of the screen is used by default. The last parameter, b, sets the type
- of border used to surround the window. If no parameter is found, spaces are
- used. If you enter a minus sign for b, a single-line box character will be
- drawn. An equals sign for b will produce a the double-line box character.
- In all cases, the center of the window is cleared with spaces of the chosen
- color. For example, the command
-
- BATCHMAN WINDOW 1,1,80,25,17h,=
-
- will create a blue window with white double line box characters that will fill
- the entire screen, making a nice menu frame. Text could then be added with
- the BATCHMAN SETCURSOR and CECHO commands.
-
- TYPEMATIC [m,n | N] {EL=0 if
- valid parameters; EL=1 if not}
-
- m=typematic rate (0 - 31);
- larger m=faster rate
-
- n=initial delay (0 - 3);
- larger n=longer delay
-
- N=normal: m=20; n=1
-
- default: m=25; n=0
-
- TYPEMATIC works only with keyboards that support adjustable typematic
- (automatic key repeating) rates at the BIOS level. That includes most
- machines, starting with the AT, but not for all clones.
-
- The first optional decimal parameter, m, is a number between 0 and 31 and
- represents the desired typematic rate. The larger the m value, the faster
- your keyboard will repeat keystrokes. The second parameter, n, has a range of
- 0-3, and sets the initial delay. This delay is the length of time you must
- hold down a key before it begins repeating. The larger the delay value the
- longer the delay. The delay parameters are in increments of 1/4 second, with
- 0=1/4 and 3=1 second. The typematic parameters are divisors and cannot be
- easily be translated into fractions of a second, however, and so should be
- thought of only as a gradient scale.
-
- If you don't enter any parameters, TYPEMATIC defaults to what I consider ideal,
- a repeat rate of 25 and a delay of 0. The 25 translates into about 17
- characters per second with an initial delay of 1/4 second. You can restore
- the typematic 2rate to the normal hardware defaults (11 characters per second
- with a 1/2 second delay) by using the N parameter. Just enter:
-
- BATCHMAN TYPEMATIC N
-
- and the normal values of 20, 1 will be used. Once you try adding a little
- zoom to your keyboard, however, I don't think you'll ever go back to the
- hardware defaults.